package org.novaacropole.email;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ValueChangeEvent;

import lombok.Getter;
import lombok.Setter;

import org.novaacropole.grupo.Grupo;
import org.novaacropole.util.MB;
import org.novaacropole.util.PegasusException;

@SuppressWarnings("serial")
@ViewScoped
@ManagedBean
public class EmailMB extends MB {

	@Getter
	@Setter
	String textArea;
	@Getter
	@Setter
	List<String> selectedItems;

	@PostConstruct
	public void pageLoad() {
		grupo = new Grupo();
		grupos = Grupo.findAll();
		textArea = null;
	}

	public void change(ValueChangeEvent event) {
		textArea = null;
		Grupo grupoTemp = Grupo.findByIdWithEmails((Integer) event
				.getNewValue());
		if (grupoTemp == null || grupoTemp.getEmails().size() == 0)
			return;
		String txt = "";
		for (Email email : grupoTemp.getEmails())
			txt += email.getEmail() + ",";
		textArea = txt;
		formatTextArea();
	}

	public void save() {
		Grupo grupoTemp = Grupo.findById(grupo.getId());
		if (grupoTemp == null)
			throw new PegasusException("Selecione um grupo");
		formatTextArea();
		grupoTemp.setEmails(null);
		if (textArea.length() > 0) {
			for (String emailStr : textArea.split(",")) {
				Email email = new Email(emailStr);
				Email temp = Email.findByEmail(emailStr);
				if (temp != null)
					email = temp;
				grupoTemp.addEmail(email);
				email.addGrupo(grupoTemp);
			}
		}
		grupoTemp.save();
	}

	public void formatTextArea() {
		textArea = textArea.replace(" ", "").replace(";", ",")
				.replace("\r\n", ",");
		while (textArea.endsWith(","))
			textArea = textArea.substring(0, textArea.length() - 1);
	}

}
